首页 > 试题广场 >

最大数

[编程题]最大数
  • 热度指数:6035 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一个包含大写英文字母和数字的句子,找出这个句子所包含的最大的十六进制整数,返回这个整数的值。数据保证该整数在int表示范围内

示例1

输入

"012345BZ16"

输出

1193051

说明

12345B对应十进制为1193051

备注:
0<字符串长度<=105
用到了递归,不过要修改默认递归深度
import sys
sys.setrecursionlimit(3000)


flag_num = 0
str_list = [chr(x) for x in range(65, 71)] + [str(y) for y in range(0, 10)]
target_list = []


class Solution:
    def solve(self, s):
        global flag_num
        pointer1 = pointer2 = flag_num
        while pointer1 < len(s) and s[pointer1] == '0':
            flag_num += 1
            pointer1 = pointer2 = flag_num
        while pointer2 < len(s) - 1 and s[pointer2] in str_list:
            pointer2 += 1
        if pointer1 != pointer2:
            target_list.append(s[pointer1:pointer2])
        if flag_num < len(s):
            flag_num = pointer2 + 1
            self.solve(s)
        res = max(target_list, key=lambda item: int(item, 16))
        return int(res, 16)


发表于 2021-08-21 11:36:26 回复(0)

问题信息

难度:
1条回答 6723浏览

热门推荐

通过挑战的用户

查看代码